package com.example.myapplicationktkt2.activity

import android.content.Intent
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.activity.result.ActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import com.example.myapplicationktkt2.R

/**
 * Activity参数传递和返回示例 - 主页面
 * 演示Activity之间参数传递的两种方式以及参数返回的三种方式
 */
class ActivityA : AppCompatActivity() {
    
    private lateinit var resultTextView: TextView
    
    // 方式1: 使用startActivityForResult()的回调方式接收结果
    private val activityResultLauncher = registerForActivityResult(
        ActivityResultContracts.StartActivityForResult()
    ) { result: ActivityResult ->
        if (result.resultCode == RESULT_OK) {
            val data = result.data?.getStringExtra("result_data")
            resultTextView.append("\n\n方式1返回结果:\n$data")
        }
    }
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_a)
        
        resultTextView = findViewById(R.id.result_text)
        
        // 按钮1: 使用Intent传递参数 - 基本数据类型
        val btnSendBasicData = findViewById<Button>(R.id.btn_send_basic_data)
        btnSendBasicData.setOnClickListener {
            val intent = Intent(this, ActivityB::class.java)
            intent.putExtra("user_name", "张三")
            intent.putExtra("user_age", 25)
            intent.putExtra("is_vip", true)
            activityResultLauncher.launch(intent)
        }
        
        // 按钮2: 使用Intent传递参数 - 对象数据（通过序列化）
        val btnSendObjectData = findViewById<Button>(R.id.btn_send_object_data)
        btnSendObjectData.setOnClickListener {
            val intent = Intent(this, ActivityC::class.java)
            val user = User("李四", 30, true)
            intent.putExtra("user_object", user)
            activityResultLauncher.launch(intent)
        }
    }
}